<template>
	<div class="main-container"  :class="wrap?'main-wrap-container':'main-no-wrap-container'" id="search-mixin-id">
		<main-content :title="contentTitle">
			<div slot="search" v-if="showSearchBox">
				<SearchBox v-if="showSearchBox" :searchParamsList="searchParamsList" :searchParam.sync="searchParam"
					@searchBoxParams="searchClick" @searchReset="searchReset"></SearchBox>
			</div>
			<div slot="table">
				<!-- 在此处放置表格内容 -->
				<avue-crud ref="Buyer_SalesContractTable" :data="listData" :showColumn="showColumn"
					:isSaveColumns="true" @selection-change="selectionChange" id="printTable" :option="option" stripe
					:page.sync="page" @on-load="onPageLoad" @row-dblclick="handleRowDBLClick" @sort-change="sortChange"
					@current-row-change="handleCurrentRowChange">
					<template slot-scope="scope" slot="menu">
						<el-button type="opr-primary" size="mini" icon="el-icon-view"
							v-if="hasBtns('Buyer_SalesContract:view')&&hasButtonPermission('Buyer_SalesContract:view')"
							@click="viewForm(scope.row)">{{$t("crud.viewBtn")}}</el-button>
						<!-- <el-button type="opr-primary" size="mini"  icon="el-icon-edit" v-if="hasBtns('Buyer_SalesContract:modify')&&hasButtonPermission('Buyer_SalesContract:modify')" @click="editForm(scope.row)">{{$t("crud.editBtn")}}</el-button>
                    <el-button type="opr-primary" size="mini"  icon="el-icon-delete" v-if="hasBtns('Buyer_SalesContract:delete')&&hasButtonPermission('Buyer_SalesContract:delete')" @click="deleteForm(scope.row)">{{$t("crud.delBtn")}}</el-button> -->
						<el-button type="opr-primary" size="mini" icon="el-icon-user"
							v-if="hasBtns('Buyer_SalesContract:audit')&&hasButtonPermission('Buyer_SalesContract:audit')&&scope.row.state == '审核不通过' || scope.row.state == '未审核'"
							@click="auditForm(scope.row)">{{$t("审核")}}</el-button>
					</template>
					<template slot="menuLeft">
						<!-- <el-button type="primary"  v-if="hasButtonPermission('Buyer_SalesContract:add')" icon="el-icon-plus" size="small" @click="openForm()">{{$t("crud.addBtn")}}</el-button>
                     <el-button type="primary"  v-if="hasButtonPermission('Buyer_SalesContract:batchDelete')" icon="el-icon-delete" size="small" @click="batchDelete()">{{$t("forme.editModal.batchDeletionBtn")}}</el-button> -->
						<el-button type="primary" v-if="hasButtonPermission('Buyer_SalesContract:print')"
							icon="el-icon-printer" size="small" @click="printForm">{{$t("editorModule.print")}}
						</el-button>
					</template>
				</avue-crud>
				<el-dialog title="销售合同"  v-dialogDrag :append-to-body="true" :fullscreen="true" :visible.sync="flag"
					:class="isWorkflowForm ? 'work-form-dialog' : ''" :show-close="!isWorkflowForm">
					<Buyer_SalesContractForm v-if="flag" :isEdit="isEdit" :disabled="disabled" @onChange="dialogChange"
						:keyValue="keyValue" :isdisabled="isdisabled" :isreadonly="isreadonly"></Buyer_SalesContractForm>
				</el-dialog>
			</div>
		</main-content>
	</div>
</template>
<script>
	import MainFixed from "@/page/main/MainFixed";
	import authorizeMixin from "@/mixins/authorize";
	import tableOptionMixin from "@/mixins/tableOption"; //table 高度计算
	import tableSearchMixin from "@/mixins/tableSearch"; //table 搜索 
	import displayColumnsMixin from "@/mixins/displayColumns"; //表格展示列显隐保存 
	import MainContent from "@/page/main/MainContent";
	import request from '@/router/axios';
	import {
		baseUrl
	} from '@/config/env';
	import {
		getOrder
	} from '@/util/util';
	import Buyer_SalesContractForm from './Buyer_SalesContractForm';
	export default {
		name: "Buyer_SalesContract",
		mixins: [authorizeMixin, tableOptionMixin, tableSearchMixin, displayColumnsMixin],
		components: {
			MainContent,
			Buyer_SalesContractForm,
			MainFixed
		},
		data() {
			return {
				btns: [
					'Buyer_SalesContract:refresh',
					'Buyer_SalesContract:add',
					'Buyer_SalesContract:view',
					'Buyer_SalesContract:modify',
					'Buyer_SalesContract:delete',
					'Buyer_SalesContract:batchDelete',
					'Buyer_SalesContract:print',
					'Buyer_SalesContract:audit'
				],
				page: {
					pageSize: 20,
					total: 0,
					currentPage: 1,
					layout: "total, prev, pager, next, jumper"
				},
				ids: '',
				listData: [],
				keyValue: '',
				isdisabled:'',
				isreadonly:'',
				flag: false,
				isEdit: true, // 查看-不显示按钮,
				disabled: false, // 查看-禁用input,
				isWorkflowForm: false, //默认值 false
				defaultOrderfield: '', //默认排序字段
				defaultOrder: '', //默认排序
				searchParam: {},
				defaultProps: {
					children: 'children',
					label: ''
				},
				option: {
					rowKey: 'F_Id',
					highlightCurrentRow: true,
					stripe: true,
					addBtn: false,
					tip: false,
					menuWidth: 230,
					border: true,
					page: true,
					selection: true,
					index: true,
					menu: false,
					indexLabel: this.$t('custmerForm.tableNumber'),
					align: 'center',
					menuAlign: 'left',
					delBtn: false,
					editBtn: false,
					column: [{
							sortable: true,
							label: this.$t("合同编号"),
							prop: 'order_number',
							overHidden: true,
						},
						{
							sortable: true,
							label: this.$t("商机选择"),
							prop: 'business_opportunity_number',
							overHidden: true,
						},
						{
							sortable: true,
							label: this.$t("企业名称"),
							prop: 'customer_id',
							overHidden: true,
						},
						{
							sortable: true,
							label: this.$t("联系人姓名"),
							prop: 'contactor_name',
							overHidden: true,
						},
						{
							sortable: true,
							label: this.$t("联系方式"),
							prop: 'contactor_phone',
							overHidden: true,
						},
						{
							sortable: true,
							label: this.$t("订单签订日期"),
							prop: 'create_date',
							overHidden: true,
						},
						{
							sortable: true,
							label: this.$t("服务商"),
							prop: 'sales_man_id',
							overHidden: true,
						},
						{
							sortable: true,
							label: this.$t("销售合同号"),
							prop: 'contract_number',
							overHidden: true,
						},
						{
							sortable: true,
							label: this.$t("销售合同名称"),
							prop: 'contract_name',
							overHidden: true,
						},
						{
							sortable: true,
							label: this.$t("合同开始日期"),
							prop: 'contract_start_date',
							overHidden: true,
						},
						{
						 sortable: true,
							label: this.$t("合同结束日期"),
							prop: 'contract_end_date',
							overHidden: true,
						},
						{
							sortable: true,
							label: this.$t("合同金额(含税)"),
							prop: 'tax_amount',
							overHidden: true,
						},
						{
							sortable: true,
							label: this.$t("合同金额(不含税)"),
							prop: 'none_tax_amount',
							overHidden: true,
						},
						{
							sortable: true,
							label: this.$t("合同主要内容说明"),
							prop: 'contract_instruction',
							overHidden: true,
						},
						{
							sortable: true,
							label: this.$t("审阅结果"),
							prop: 'state',
							overHidden: true,
						},
						{
							sortable: true,
							label: this.$t("审阅人"),
							prop: 'auditor_id',
							overHidden: true,
						},
						{
							sortable: true,
							label: this.$t("审阅时间"),
							prop: 'audit_date',
							overHidden: true,
						},
					]
				}
			}
		},
		created() {
			//是否有编辑 查看 删除 发起流程 发起临时流程权限 无则为操作列不显示
			let oprBtns = ['Buyer_SalesContract:modify', 'Buyer_SalesContract:view', 'Buyer_SalesContract:delete',
				'Buyer_SalesContract:audit', 'Buyer_SalesContract:createFormFlow',
				'Buyer_SalesContract:createDesignFlow'
			];
			let intersection = this.btns.filter((v) => oprBtns.includes(v));
			if (intersection.length > 0) {
				this.option.menu = true
			} else {
				this.option.menu = false
			}
			let querySearchData = [{
					name: '合同编号',
					DateField: '',
					field: 'order_number',
					tag: 'el-input',
					avueType: 'autoCode',
					lgmark: '',
				},
				{
					name: '企业名称',
					DateField: '',
					field: 'customer_id',
					tag: 'el-input',
					avueType: 'input-tip',
					lgmark: '',
				},
				{
					name: '服务商',
					DateField: '',
					field: 'sales_man_id',
					tag: 'el-input',
					avueType: 'input-tip',
					lgmark: '',
				},
				{
					name: '合同号',
					DateField: '',
					field: 'contract_number',
					tag: 'el-input',
					avueType: 'input-tip',
					lgmark: '',
				},

			]
			this.getSystemSearchList(querySearchData);
			if (this.btns.length > 0) {
				let tempBtns = this.btns.concat(oprBtns).filter((v) => this.btns.includes(v) && !oprBtns.includes(v));
				if (tempBtns.length > 0) {
					this.searchBtns = [...new Set([...tempBtns])];
				}
			}
		},
		methods: {
			handleRowDBLClick(row, event) {
				if (this.hasBtns('salescontract:modify') && this.hasButtonPermission('salescontract:modify') && this
					.openDoubleClickEdit) {
					this.editForm(row)
				}
			},
			handleCurrentRowChange(row) {
				this.$refs.Buyer_SalesContractTable.toggleSelection([row]);
			},
			printForm() {
				let element = window.document.getElementById("printTable");
				setTimeout(() => {
					html2canvas(element, {
						backgroundColor: null,
						useCORS: true,
						windowHeight: document.body.scrollHeight
					}).then(canvas => {
						const url = canvas.toDataURL();
						this.printImg = url;
						printJS({
							printable: url,
							type: "image",
							documentTitle: '打印',
							scanStyles: false,
							repeatTableHeader: false,
							header: null
						});
					});
				}, 1);
			},
			hasBtns(encode) {
				return this.btns.includes(encode);
			},
			/* 获取公司用户数据 */
			getListData() {
				if (!this.searchParam.order) {
					this.searchParam.orderfield = this.defaultOrderfield;
					this.searchParam.order = this.defaultOrder;
				}
				let params = this.changeSearchParams();
				axios({
						url: baseUrl + '/t_barin_user_registration/getLoginUserInfo',
						method: 'get',
					}).then(res => {						
						request({
							url: baseUrl + '/sales_order?customer_id=' + res.data.data.F_FirmName,
							method: 'get',
							params: params
						}).then(res => {
							this.listData = res.data.data.Rows							
							this.page.total = res.data.data.Total;
							for (let i = 0; i < res.data.data.Total; i++) {
								if (res.data.data.Rows[i].state == 0) {
									this.listData[i].state = "审核通过"
									// this.listData[i].state.push("审核通过")
								}
								if (res.data.data.Rows[i].state == 1) {
									this.listData[i].state = "审核不通过"
								}
								if (res.data.data.Rows[i].state == 2) {
									this.listData[i].state = "未审核"
								}
							}
						})
						// this.F_FirmName = res.data.data.F_FirmName;		
						// localStorage.setItem('sales_man_id',this.F_FirmName);
						// console.log(this.formData.account_type)
					})
					.catch(error => {
						console.error('数据异常!', error);
					});

			},
			/* 页面加载 */
			onPageLoad(page) {
				this.searchParam.limit = page.currentPage;
				this.searchParam.size = page.pageSize;
				this.getListData();
			},
			/*查看*/
			viewForm(val) {
				this.flag = true;
				this.isEdit = false;
				this.disabled = true;
				this.keyValue = val.id;
				this.isdisabled=true;
				this.isreadonly=true;
			},
			auditForm(val){
				this.flag = true;
				this.isEdit = true;
				this.keyValue = val.id;
				this.isdisabled=false;
				this.isreadonly=false;
			},
			/* 编辑 */
			editForm(val) {
				this.flag = true;
				this.isEdit = true;
				this.disabled = false;
				this.keyValue = val.id;
			},
			/* 打开表单 */
			openForm() {
				if (!this.isWorkflowForm) {
					//不处理工作流表单时候，表单类型重置
					window.localStorage.setItem('systemFormType', 0);
				}
				this.disabled = false;
				this.keyValue = null;
				this.flag = true;
				this.isEdit = true;
			},
			/* 删除 */
			deleteForm(val) {
				this.$confirm(this.$t("deletePrompt.promptContent"), this.$t("tip"), {
					confirmButtonText: this.$t("buttonModule.modalSureBtn"),
					cancelButtonText: this.$t("editorModule.cancel"),
					type: "warning",
				}).then(() => {
					request({
						url: baseUrl + "/sales_order/" + val.F_Id,
						method: "delete",
					}).then((res) => {
						this.getListData()
						this.$notify({
							title: this.$t("Notice.hintSuccess"),
							message: this.$t("deletePrompt.successDeleted"),
							type: "success",
						});
					});
				});
			},
			/* 分页 */
			sortChange(data) {
				if (data.order) {
					let order = getOrder(data.order);
					this.searchParam.order = order;
					this.searchParam.orderfield = data.prop;
				} else {
					this.searchParam.order = this.defaultOrder;
					this.searchParam.orderfield = this.defaultOrderfield;
				}
				this.getListData()
			},
			/* 弹窗回调 */
			dialogChange(b) {
				this.flag = false;
				this.$nextTick(() => {
					this.getListData();
				})
			},
			/* 查询 */
			searchClick(params) {
				this.page.currentPage = 1;
				this.searchParam.limit = 1;
				this.searchParam.size = this.page.pageSize;
				this.searchParam = params;
				this.getListData()
			},
			/* 查询表单重置 */
			searchReset() {
				for (const key in this.searchParam) {
					if (this.searchParam[key]) {
						this.searchParam[key] = null;
					}
				}
				this.page.currentPage = 1;
				this.searchParam.limit = 1;
				this.searchParam.size = this.page.pageSize;
				this.getListData();
			},
			selectionChange(list) {
				this.ids = list.map((x) => x.F_Id).join(',');
			},
			batchDelete() {
				if (!this.ids || this.ids.split(",").length === 0) {
					this.$message.error(this.$t("deletePrompt.noSelected"));
					return;
				}
				this.$confirm(this.$t("deletePrompt.promptContent"), this.$t("tip"), {
					confirmButtonText: this.$t("buttonModule.modalSureBtn"),
					cancelButtonText: this.$t("editorModule.cancel"),
					type: "warning",
				}).then(() => {
					request({
						url: baseUrl + "/sales_order/" + this.ids,
						method: "delete",
					}).then((res) => {
						this.getListData();
						this.$notify({
							title: this.$t("Notice.hintSuccess"),
							message: this.$t("deletePrompt.successDeleted"),
							type: "success",
						});
					});
				});
			},
		}
	}
</script>
<style scoped>
	.searchBox {
		width: calc(100% - 218px);
		display: inline-block;
	}

	.main-container {
		height: 100% !important;
		padding: 0 8px !important;
	}

	div /deep/ .custom-tree-node span {
		font-size: 14px;
		padding-left: 10px;
	}

	div /deep/ .custom-tree-node i {
		font-size: 12px;
	}

	div /deep/ .el-dialog__body {
		height: 70vh;
		overflow: scroll;
	}
</style>
